package com.bkm.factory;

import java.util.ArrayList;
import java.util.List;

/**
 * 寶可夢
 */
public class BaoKeMeng {

    /**
     * 名字
     */
    private String name;

    /**
     * 生日
     */
    private TypeEnum type;

    /**
     * 介紹
     */
    private String introduce;

    /**
     * 寶可夢標簽， 按照順序排列， 程序選擇的時候會使用這個邏輯
     */
    private List<String> tags = new ArrayList<String>();

    public BaoKeMeng(String name) {
        this.name = name;
    }

    /**
     * 添加標簽
     *
     * @param tag
     */
    public void addTags(String tag) {
        this.tags.add(tag);
    }

    /**
     * 判斷輸入的屬性是不是屬於我
     *
     * @param inputPath
     * @return
     */
    public boolean belongMe(String inputPath) {
        String[] inputPathArray = inputPath.split(",");

        // 如果輸入屬性數量大於寶可夢標簽，輸出false
        if (inputPathArray.length > tags.size()) {
            return false;
        }

        int equalCount = 0;
        for (int i = 0; i < inputPathArray.length; i++) {
            String theTags = tags.get(i);
            // 存在一個標簽，多個值的情況
            String[] theTagsArray = theTags.split("\\|");
            for (String tag : theTagsArray) {
                if (inputPathArray[i].equals(tag)) {
                    equalCount++;
                    // 匹配就計算退出
                    break;
                }
            }
        }
        // 長度相同， 表示路徑匹配， 屬於本寶可夢
        return equalCount == inputPathArray.length;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public TypeEnum getType() {
        return type;
    }

    public void setType(TypeEnum type) {
        this.type = type;
    }

    public String getIntroduce() {
        return introduce;
    }

    public void setIntroduce(String introduce) {
        this.introduce = introduce;
    }

    public List<String> getTags() {
        return tags;
    }
}
